package com.ruoyi.exam.service;

import java.util.List;
import java.util.Map;

import com.ruoyi.exam.domain.entity.Question;
import com.ruoyi.exam.domain.vo.QuestionImportVo;

/**
 * 题目，存储题目信息Service接口
 * 
 * @author ruoyi
 * @date 2024-12-17
 */
public interface IQuestionService {
    /**
     * 查询题目，存储题目信息
     * 
     * @param id 题目，存储题目信息主键
     * @return 题目，存储题目信息
     */
    public Question selectQuestionById(Long id);

    /**
     * 查询题目，存储题目信息列表
     * 
     * @param question 题目，存储题目信息
     * @return 题目，存储题目信息集合
     */
    public List<Question> selectQuestionList(Question question);

    /**
     * 新增题目，存储题目信息
     * 
     * @param question 题目，存储题目信息
     * @return 结果
     */
    public int insertQuestion(Question question);

    /**
     * 修改题目，存储题目信息
     * 
     * @param question 题目，存储题目信息
     * @return 结果
     */
    public int updateQuestion(Question question);

    /**
     * 批量删除题目，存储题目信息
     * 
     * @param ids 需要删除的题目，存储题目信息主键集合
     * @return 结果
     */
    public int deleteQuestionByIds(Long[] ids);

    /**
     * 删除题目，存储题目信息信息
     * 
     * @param id 题目，存储题目信息主键
     * @return 结果
     */
    public int deleteQuestionById(Long id);

    /**
     * 导入试题数据
     * 
     * @param importList 试题数据列表
     * @param outline    题库内容
     * @return 结果
     */
    public String importQuestion(List<QuestionImportVo> importList, String outline);

    /**
     * 根据题库名称和题型数量生成试卷题目
     *
     * @param titleNames 题库名称列表
     * @param typeCount  各题型数量
     * @return 生成的题目列表
     */
    public List<Question> generatePaperQuestions(List<String> titleNames, Map<String, Integer> typeCount);
}
